<?php 
include('./fun.php');include('./hd_fun.php');
$conn=my_sql($cfg);
$re=user_login();
if($re['err']=='no_login'){direct('login.php?t='.time());exit;}
if($re['err']!='ok'){die($re['err']);}
$user=$re['user'];
$shop_id=$re['shop_id'];
$shop=get_shop();
$set=get_set();

$sql='select * from '.$cfg['e'].'order where shop_id="'.$shop['id'].'" ';
$state=g('state');
if($state){
$sql.=' and state=:state ';$p['state']=$state;
}else{$state=1;$sql.=' and state=1 ';}

$page=g('page');
if(!$page or !is_numeric($page)){$page=1;}$page_num=20;
$start=($page-1)*$page_num;
$sql.=' order by id desc limit '.$start.','.$page_num;

$l=db($sql,$p);
foreach ($l as $itemKey => $itemInfo) {
    $pro=get_order_pro($itemInfo['id']);
    $l[$itemKey]['order_pro'] = $pro;
}


$order_id = [];
// 关键修复点：
// 1. 使用 JSON_UNESCAPED_UNICODE 避免中文被转义
// 2. 使用 json_encode 生成合法 JSON
$json = json_encode($l, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

// 输出到 HTML 时使用 htmlspecialchars 转义
$safeJson = htmlspecialchars($json, ENT_QUOTES, 'UTF-8');

?>
<style>
pro_item{float:left;width:100%;padding:0;height:50px;padding-left:50px;padding-top:6px;font-size:12px;text-align:left;padding-right:10px}
pro_img{position:absolute;width:40px;height:40px;left:0;top:10px;}
pro_name{float:left;width:100%;height:20px;line-height:20px;overflow:hidden;}
pro_info{float:left;width:100%;color:crimson;}
pro_price{float:left;width:100%;color:crimson;}
pro_price x{margin-left:10px;color:#000}
table p{line-height:16px;margin:0;padding-top:2px;padding-bottom:2px}
user_info{float:left;width:100%;height:40px;line-height:40px;display:flex;justify-content:center;}
user_info img{width:40px;border-radius:50%;float:left;}
user_info text{float:left;margin-left:10px;font-weight:bold;}

</style>

<hh><b>订单管理</b></hh>
<mm style="padding-top:10px">
<?php
$url=url_get(['page','state','start','end']);
echo '<index>';
echo '<a class="m '.($state==1?'select':'').'" href="?'.$url.'&state=1">待发货</a>';
echo '<a class="m '.($state==5?'select':'').'" href="?'.$url.'&state=5">已经发货</a>';
echo '<a class="m '.($state==10?'select':'').'" href="?'.$url.'&state=10">完成</a>';
echo '<a class="m '.($state==80?'select':'').'" href="?'.$url.'&state=80">退款申请</a>';
echo '<a class="m '.($state==99?'select':'').'" href="?'.$url.'&state=99">售后</a>';
echo '<a class="m '.($state==100?'select':'').'" data-json="" onclick="exporthtml('.$safeJson.')" >一键导出</a>';
echo '</index>';


if($l){
echo '<table>';
th(['订单商品','订单信息','客户信息','活动','操作']);

foreach($l as $v){
    array_push($order_id, $v['id']);

switch($v['yun']){
case 'is_zt':$yun='门店自提';break;
case 'is_ps':$yun='配送到家';break;
case 'is_kd':$yun='快递';break;
}

//print_r($pro);
echo '<tr>';
echo '<td style="width:30%;padding:0;padding-left:10px">';
foreach($v['order_pro'] as $t){
echo '<pro_item><pro_img style="background:url('.$t['img'].') no-repeat center;background-size:cover;"></pro_img>';
echo '<pro_name>'.($t['c']=='pro'?'':'<x>['.$t['c'].']</x>').''.$t['title'].'</pro_name><pro_info>'.$t['info'].'</pro_info>';
echo '<pro_price>￥'.$t['total'].'<x>×'.$t['num'].'</x></pro_price>';
echo '</pro_item>';
}

echo '</td>';

echo '<td style="width:20%;padding:5px;">';
echo '<p>订单编号:'.$v['id'].'</p>';
echo '<p>商品金额:￥'.$v['price'].'</p>';
echo '<p>商品数:'.$v['num'].'</p>';
echo '<p>运费:￥'.$v['yun_price'].'</p>';
echo '<p>优惠金额:￥'.$v['quan_price'].'</p>';
echo '<p>订单合计:￥'.$v['total'].'</p>';

echo '</td>';

echo '<td style="width:25%;padding:5px;">';
echo '<user_info><img src="'.$v['logo'].'"><text>'.base64($v['nickname']).'</text></user_info>';
echo '<p>运输方式:<b>'.$yun.'</b></p>';
echo '<p>地址:'.$v['pro'].' '.$v['city'].' '.$v['dist'].'</p>';
echo '<p>'.$v['addr'].'</p>';
echo '<p>联系人:'.$v['name'].' '.$v['phone'].'</p>';
echo '</td>';

echo '<td style="width:15%;padding:5px;">'.base64($v['hd_title']).'</td>';
echo '<td>

<a  onclick="printhtml($(this))"  i="'.$v['id'].'">打印</a>
</td>';

echo '</tr>';
}
echo '</table>';
}else{no_data('没有找到订单数据');}
$order_id = implode(', ', $order_id);

page();
?>


</mm>




<script>

    function printhtml(e){
        var id=e.attr('i');if(!id){id=0;}
        var data = "<?php echo $order_id?>"
        console.log(data);
        post('printer',{'order_id':id},function(res){
            msg(res);
        });
    }
    /**
     * 生成时间戳文件名（格式：YYYYMMDD_HHMMSS）
     * @returns {string} 格式化后的时间字符串
     */
    function generateTimestampFilename() {
        const now = new Date();

        // 提取时间组件并格式化（补零处理）
        const year = now.getFullYear();
        const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始
        const day = String(now.getDate()).padStart(2, '0');
        const hours = String(now.getHours()).padStart(2, '0');
        const minutes = String(now.getMinutes()).padStart(2, '0');
        const seconds = String(now.getSeconds()).padStart(2, '0');

        // 组合时间戳（替换非法字符）
        return `${year}${month}${day}_${hours}${minutes}${seconds}`
            .replace(/:/g, '') // 移除时间分隔符（Windows兼容）
            .replace(/\s/g, ''); // 移除空格
    }
    function exporthtml(e){
        console.log(e)
        fetch('daochuExcel.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                // 关键修复：明确指定接收二进制流
                'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
            },
            body: JSON.stringify(e)
        })
            .then(response => {
                // 验证响应头
                if (!response.ok) throw new Error('导出失败: ' + response.statusText);

                // 关键修复：正确解析二进制流
                return response.blob().then(blob => {
                    // 创建临时URL
                    const url = window.URL.createObjectURL(blob);
                    const a = document.createElement('a');

                    // 从Content-Disposition头获取文件名
                    const filename = '订单数据'+ generateTimestampFilename() + '.xlsx';

                    a.href = url;
                    a.download = decodeURIComponent(filename); // 处理中文文件名
                    document.body.appendChild(a);
                    a.click();

                    // 清理资源
                    window.URL.revokeObjectURL(url);
                    a.remove();
                });
            })
            .catch(error => {
                console.error('下载失败:', error);
                alert('导出失败: ' + error.message);
            });
    }
</script>